The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Continued development of the Internet has made a wide variety of cloud-based services available to users. One common example are cloud storage services that allow users to store information on network storage devices, i.e., in “cloud storage,” accessible via the Internet. Cloud storage allows users to store and retrieve data from any device that has Internet connectivity. This allows users to store their personal data, such as contact information, photos, videos, etc., at a single location that can be accessed by all of their personal computing devices.
Despite their many benefits, there are several issues related to using cloud-based services. One issue is that cloud-based services often use an authentication mechanism to allow third party access without exposing user credentials. For example, OAuth 2.0 is an open authorization standard that provides secure third party delegated access to resources on behalf of a resource owner using access tokens. Such authentication mechanisms, however, may be complex and require numerous interactions to obtain a valid access token, creating a burden on both client devices and cloud services. A greater number of authentication interactions increases the load on cloud services. In addition, access tokens are user/application/device and cloud service specific, requiring that a separate access token be obtained for each user/application/device and cloud service combination. Moreover, access tokens usually have a short lifespan for security purposes and are sometimes not reusable, so the particular authentication mechanism required by the cloud service must be re-performed before a subsequent request from the same user/application/device can be made. This may be required, for example, even if there is a disruption in connectivity that causes a client application to have to re-submit a request to a cloud service. Another drawback is that cloud services often use specific application program interfaces (APIs) and language, such as C++, Python, etc., and require particular data formats, e.g., XML, ReST, SOAP, etc., that add complexity and may not be supported by some third party applications.